package com.cskaoyan.javase.basic._3operation._5ternary;

/**
 * 三目运算符,其实是一个三元运算符,是一个有三个操作数的运算符
 * 布尔表达式: 结果是布尔值的表达式
 * 语法:
 *      (布尔表达式) ? 表达式1 : 表达式2;
 * 如果布尔表达式的结果是true时,执行表达式1,
 * 如果布尔表达式的结果是false,执行表达式2,
 * 因为三目运算符一定会执行某个表达式,所以三目运算符组成的表达式是有结果的,这是三目运算符的最大特点
 *
 * @since 11:08
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 求两个数的最大值
        int a = 10;
        int b = 200;
        // Variable 'max' might not have been initialized
        // 接收结果的两种快捷方式
        // 1.ctrl + alt + V 2.在表达式后面写".var"
        // Condition 'a > b' is always 'false'
        int max = (a > b) ? a : b;
        System.out.println(max);

        // 求三个数的最大值
        int c = 100;
        // 三目运算符是可以嵌套使用的,但是嵌套使用会导致代码的可读性变差
        // 所以尽量不要嵌套三目运算符,可以多写几次
        int max2 = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
        System.out.println(max2);

        // 这样写代码可读性会更好
        int maxTemp = (a > b) ? a : b;
        int maxFinal = (maxTemp > c) ? maxTemp : c;


        // 写三目运算符如果连接的表达式很长,一定要加()
        boolean flag = true ? (false) : (true == true ? true : false);
        System.out.println(flag);
    }
}
